package com.yxx.medicinecommon.result;

import lombok.Data;

import java.io.Serializable;

/**
 * 后端统一返回结果
 * @param <T>
 */
@Data
public class ResponseResult<T> implements Serializable {

    /**
     * 编码：1成功，0和其它数字为失败
     */
    private Integer code;
    /**
     * 错误信息
     */
    private String msg;
    /**
     * 数据
     */
    private T data;

    /**
     * 创建一个成功的响应结果
     * 默认 code 为 1，表示成功
     *
     * @return 成功的响应结果
     */
    public static<T> ResponseResult<T> success() {
        ResponseResult<T> responseResult = new ResponseResult<T>();
        responseResult.code = 1;
        return responseResult;
    }

    /**
     * 创建一个包含数据的成功的响应结果
     * 默认 code 为 1，表示成功
     *
     * @param object 需要返回的数据
     * @return 包含数据的成功的响应结果
     */
    public static<T> ResponseResult<T> success(T object) {
        ResponseResult<T> responseResult = new ResponseResult<>();
        responseResult.data = object;
        responseResult.code = 1;
        return responseResult;
    }

    /**
     * 创建一个包含错误信息的失败的响应结果
     * 默认 code 为 0，表示失败
     *
     * @param msg 错误信息
     * @return 包含错误信息的失败的响应结果
     */
    public static<T> ResponseResult<T> error(String msg) {
        ResponseResult responseResult = new ResponseResult();
        responseResult.msg = msg;
        responseResult.code = 0;
        return responseResult;
    }
}
